home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / rock / BaseMenu.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  6.5 KB  |  236 lines

  1. package com.extensibility.rock;
  2.  
  3. import com.extensibility.util.HashVector;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Font;
  8. import java.awt.Point;
  9. import java.beans.PropertyChangeListener;
  10. import java.util.Vector;
  11. import javax.swing.AbstractAction;
  12. import javax.swing.AbstractButton;
  13. import javax.swing.Action;
  14. import javax.swing.Icon;
  15. import javax.swing.JCheckBoxMenuItem;
  16. import javax.swing.JComponent;
  17. import javax.swing.JMenuItem;
  18. import javax.swing.JPopupMenu;
  19. import javax.swing.JRadioButtonMenuItem;
  20. import javax.swing.event.EventListenerList;
  21. import javax.swing.event.MenuEvent;
  22.  
  23. public class BaseMenu extends RJMenu implements RMenuListener, MenuItemContainer {
  24.    public static Font font;
  25.    EventListenerList rlistenerList = new EventListenerList();
  26.    MenuEvent menuEvent = new MenuEvent(this);
  27.    HashVector rlistenerRegistry = new HashVector();
  28.  
  29.    public static void setDefaultFont(Font var0) {
  30.       font = var0;
  31.    }
  32.  
  33.    public void menuAppearing(MenuEvent var1) {
  34.    }
  35.  
  36.    public void remove(int var1) {
  37.       JMenuItem var2 = ((RJMenu)this).getItem(var1);
  38.       super.remove(var1);
  39.       if (var2 != null) {
  40.          this.removeRMenuListeners(var2);
  41.       }
  42.  
  43.    }
  44.  
  45.    public void remove(Component var1) {
  46.       super.remove(var1);
  47.       if (var1 instanceof JMenuItem) {
  48.          this.removeRMenuListeners((JMenuItem)var1);
  49.       }
  50.  
  51.    }
  52.  
  53.    public void remove(JMenuItem var1) {
  54.       super.remove(var1);
  55.       this.removeRMenuListeners(var1);
  56.    }
  57.  
  58.    public void removeAll() {
  59.       while(((RJMenu)this).getMenuComponentCount() > 0) {
  60.          this.remove(0);
  61.       }
  62.  
  63.    }
  64.  
  65.    public void addRMenuListener(RMenuListener var1, JMenuItem var2) {
  66.       this.rlistenerList.add(Class.forName("com.extensibility.rock.RMenuListener"), var1);
  67.       this.rlistenerRegistry.put(var2, var1);
  68.    }
  69.  
  70.    public void removeRMenuListener(RMenuListener var1, JMenuItem var2) {
  71.       this.rlistenerList.remove(Class.forName("com.extensibility.rock.RMenuListener"), var1);
  72.       this.rlistenerRegistry.remove(var2, var1);
  73.    }
  74.  
  75.    public void removeRMenuListeners(JMenuItem var1) {
  76.       Vector var2 = this.rlistenerRegistry.getVector(var1);
  77.       if (var2 != null) {
  78.          for(int var3 = 0; var3 < var2.size(); ++var3) {
  79.             this.rlistenerList.remove(Class.forName("com.extensibility.rock.RMenuListener"), (RMenuListener)var2.elementAt(var3));
  80.          }
  81.       }
  82.  
  83.       this.rlistenerRegistry.remove(var1);
  84.    }
  85.  
  86.    public BaseMenu(String var1) {
  87.       super(var1);
  88.       if (font != null) {
  89.          ((JComponent)this).setFont(font);
  90.       }
  91.  
  92.    }
  93.  
  94.    public JCheckBoxMenuItem addAsCheckBox(RAction var1) {
  95.       JCheckBoxMenuItem var2 = new JCheckBoxMenuItem((String)((AbstractAction)var1).getValue("Name"), (Icon)((AbstractAction)var1).getValue("SmallIcon"));
  96.       this.addAsSelectable(var2, var1);
  97.       return var2;
  98.    }
  99.  
  100.    public JRadioButtonMenuItem addAsRadioBtn(RAction var1) {
  101.       JRadioButtonMenuItem var2 = new JRadioButtonMenuItem((String)((AbstractAction)var1).getValue("Name"), (Icon)((AbstractAction)var1).getValue("SmallIcon"));
  102.       this.addAsSelectable(var2, var1);
  103.       return var2;
  104.    }
  105.  
  106.    private void addAsSelectable(JMenuItem var1, RAction var2) {
  107.       ((AbstractButton)var1).setHorizontalTextPosition(4);
  108.       ((AbstractButton)var1).setVerticalTextPosition(0);
  109.       var1.setEnabled(((AbstractAction)var2).isEnabled());
  110.       if (var2.getSelected()) {
  111.          ((AbstractButton)var1).setSelected(true);
  112.       }
  113.  
  114.       ((AbstractButton)var1).addActionListener(var2);
  115.       this.add(var1);
  116.       PropertyChangeListener var3 = this.createActionChangeListener(var1);
  117.       ((AbstractAction)var2).addPropertyChangeListener(var3);
  118.       this.addRMenuListener(var2, var1);
  119.    }
  120.  
  121.    public JMenuItem add(RAction var1) {
  122.       return super.add(var1);
  123.    }
  124.  
  125.    public JMenuItem add(JMenuItem var1) {
  126.       if (font != null) {
  127.          ((JComponent)var1).setFont(((Component)this).getFont());
  128.       }
  129.  
  130.       return super.add(var1);
  131.    }
  132.  
  133.    public JMenuItem add(BaseMenu var1) {
  134.       JMenuItem var2 = super.add(var1);
  135.       this.addRMenuListener(var1, var2);
  136.       return var2;
  137.    }
  138.  
  139.    public JMenuItem insert(Action var1, int var2) {
  140.       JMenuItem var3 = super.insert(var1, var2);
  141.       if (font != null) {
  142.          ((JComponent)var3).setFont(((Component)this).getFont());
  143.       }
  144.  
  145.       return var3;
  146.    }
  147.  
  148.    public void addSeparator() {
  149.       ((RJMenu)this).add(new RSeparator());
  150.    }
  151.  
  152.    public void setPopupMenuVisible(boolean var1) {
  153.       if (((Component)this).isEnabled()) {
  154.          boolean var2 = ((RJMenu)this).isPopupMenuVisible();
  155.          if (var1 != var2) {
  156.             ((RJMenu)this).isPopupMenuVisible();
  157.             if (var1 && ((Component)this).isShowing()) {
  158.                this.fireMenuAppearing();
  159.                Point var3 = this.getPopupMenuOrigin();
  160.                ((RJMenu)this).getPopupMenu().show(this, var3.x, var3.y);
  161.             } else {
  162.                ((RJMenu)this).getPopupMenu().setVisible(false);
  163.             }
  164.          }
  165.  
  166.       }
  167.    }
  168.  
  169.    protected Point getPopupMenuOrigin() {
  170.       int var1 = 0;
  171.       int var2 = 0;
  172.       JPopupMenu var3 = ((RJMenu)this).getPopupMenu();
  173.       Dimension var4 = Screen.getScreenSize();
  174.       Point var5 = Screen.getScreenTopLeft();
  175.       Dimension var6 = ((Component)this).getSize();
  176.       Dimension var7 = ((Component)var3).getSize();
  177.       if (var7.width == 0) {
  178.          var7 = ((JComponent)var3).getPreferredSize();
  179.       }
  180.  
  181.       Point var8 = ((Component)this).getLocationOnScreen();
  182.       Container var9 = ((Component)this).getParent();
  183.       if (var9 instanceof JPopupMenu) {
  184.          if (var8.x - var5.x + var6.width + var7.width < var4.width) {
  185.             var1 = var6.width;
  186.          } else {
  187.             var1 = 0 - var7.width;
  188.          }
  189.  
  190.          int var10 = var8.y - var5.y + var7.height - (var4.height - 2);
  191.          if (var10 <= 0) {
  192.             var2 = 0;
  193.          } else {
  194.             var2 = 0 - var10;
  195.          }
  196.       } else {
  197.          if (var8.x - var5.x + var7.width < var4.width) {
  198.             var1 = 0;
  199.          } else {
  200.             var1 = var6.width - var7.width;
  201.          }
  202.  
  203.          int var13 = var8.y - var5.y + var6.height + var7.height - (var4.height - 2);
  204.          if (var13 <= 0) {
  205.             var2 = var6.height;
  206.          } else {
  207.             var2 = var6.height - var13;
  208.          }
  209.       }
  210.  
  211.       return new Point(var1, var2);
  212.    }
  213.  
  214.    protected PropertyChangeListener createActionChangeListener(JMenuItem var1) {
  215.       return new MyActionChangedListener(var1);
  216.    }
  217.  
  218.    protected void fireMenuAppearing() {
  219.       Object[] var1 = this.rlistenerList.getListenerList();
  220.  
  221.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  222.          if (var1[var2] == Class.forName("com.extensibility.rock.RMenuListener")) {
  223.             if (var1[var2 + 1] == null) {
  224.                throw new Error(String.valueOf(String.valueOf(((AbstractButton)this).getText()).concat(String.valueOf(" has a NULL Listener!! "))).concat(String.valueOf(var2)));
  225.             }
  226.  
  227.             if (var1[var2 + 1] instanceof RMenuListener) {
  228.                MenuEvent var3 = new MenuEvent(this);
  229.                ((RMenuListener)var1[var2 + 1]).menuAppearing(var3);
  230.             }
  231.          }
  232.       }
  233.  
  234.    }
  235. }
  236.